[INFO] cloning repository https://github.com/goldencm/blanc-os
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/goldencm/blanc-os" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgoldencm%2Fblanc-os", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgoldencm%2Fblanc-os'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1f5a137106d4ed5ce2b870975a0336a83e4fc8c8
[INFO] fixing goldencm/blanc-os against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgoldencm%2Fblanc-os" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/goldencm/blanc-os
[INFO] finished tweaking git repo https://github.com/goldencm/blanc-os
[INFO] tweaked toml for git repo https://github.com/goldencm/blanc-os written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/goldencm/blanc-os on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 58 packages to latest compatible versions
[INFO] [stderr]       Adding bitflags v1.3.2 (available: v2.13.0)
[INFO] [stderr]       Adding bootloader v0.10.13 (available: v0.11.15)
[INFO] [stderr]       Adding conquer-once v0.2.1 (available: v0.4.0)
[INFO] [stderr]       Adding crossbeam-queue v0.2.3 (available: v0.3.12)
[INFO] [stderr]       Adding elfloader v0.14.0 (available: v0.16.0)
[INFO] [stderr]       Adding font8x8 v0.2.7 (available: v0.3.1)
[INFO] [stderr]       Adding hashbrown v0.11.2 (available: v0.17.1)
[INFO] [stderr]       Adding intrusive-collections v0.9.7 (available: v0.10.2)
[INFO] [stderr]       Adding pc-keyboard v0.5.1 (available: v0.9.0)
[INFO] [stderr]       Adding pic8259 v0.10.4 (available: v0.11.0)
[INFO] [stderr]       Adding spin v0.5.2 (available: v0.12.1)
[INFO] [stderr]       Adding spin v0.9.8 (available: v0.12.1)
[INFO] [stderr]       Adding spinning_top v0.2.5 (available: v0.3.0)
[INFO] [stderr]       Adding uart_16550 v0.2.19 (available: v0.6.0)
[INFO] [stderr]       Adding volatile v0.2.7 (available: v0.6.1)
[INFO] [stderr]       Adding x86_64 v0.14.13 (available: v0.15.4)
[INFO] [stderr]       Adding xmas-elf v0.6.2 (available: v0.10.0)
[INFO] [stderr]       Adding xmas-elf v0.8.0 (available: v0.10.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zero v0.1.3
[INFO] [stderr]   Downloaded conquer-once v0.2.1
[INFO] [stderr]   Downloaded xmas-elf v0.6.2
[INFO] [stderr]   Downloaded font8x8 v0.2.7
[INFO] [stderr]   Downloaded os_units v0.4.2
[INFO] [stderr]   Downloaded runner-utils v0.0.2
[INFO] [stderr]   Downloaded conquer-util v0.2.0
[INFO] [stderr]   Downloaded bootloader-locator v0.0.4
[INFO] [stderr]   Downloaded x86_64 v0.14.13
[INFO] [stderr]   Downloaded spinning_top v0.2.5
[INFO] [stderr]   Downloaded accessor v0.3.3
[INFO] [stderr]   Downloaded elfloader v0.14.0
[INFO] [stderr]   Downloaded locate-cargo-manifest v0.2.2
[INFO] [stderr]   Downloaded intrusive-collections v0.9.7
[INFO] [stderr]   Downloaded bootloader v0.10.13
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212
[INFO] running `Command { std: "docker" "start" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating simple_boot/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/coop/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crate/printer/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/fs/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/gdt/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/interrupts/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/memory/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/serial/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/task/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]    Compiling bootloader v0.10.13
[INFO] [stderr]     Checking conquer-util v0.2.0
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]     Checking font8x8 v0.2.7
[INFO] [stderr]     Checking zero v0.1.3
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking accessor v0.3.3
[INFO] [stderr]     Checking spinning_top v0.2.5
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]     Checking json v0.12.4
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking ahash v0.7.8
[INFO] [stderr]     Checking xmas-elf v0.8.0
[INFO] [stderr]     Checking xmas-elf v0.6.2
[INFO] [stderr]     Checking conquer-once v0.2.1
[INFO] [stderr]     Checking x86_64 v0.14.13
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking hashbrown v0.11.2
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]     Checking locate-cargo-manifest v0.2.2
[INFO] [stderr]     Checking bootloader-locator v0.0.4
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking elfloader v0.14.0
[INFO] [stderr]     Checking intrusive-collections v0.9.7
[INFO] [stderr]     Checking crossbeam-queue v0.2.3
[INFO] [stderr]     Checking printer v0.1.0 (/opt/rustwide/workdir/crate/printer)
[INFO] [stderr]     Checking os_units v0.4.2
[INFO] [stderr]     Checking uart_16550 v0.2.19
[INFO] [stderr]     Checking pic8259 v0.10.4
[INFO] [stderr]    Migrating crate/printer/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking fs v0.1.0 (/opt/rustwide/workdir/crate/fs)
[INFO] [stderr]     Checking gdt v0.1.0 (/opt/rustwide/workdir/crate/gdt)
[INFO] [stderr]     Checking memory v0.1.0 (/opt/rustwide/workdir/crate/memory)
[INFO] [stderr]     Checking serial v0.1.0 (/opt/rustwide/workdir/crate/serial)
[INFO] [stderr]    Migrating crate/fs/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking coop v0.1.0 (/opt/rustwide/workdir/crate/coop)
[INFO] [stderr]    Migrating crate/gdt/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/memory/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking task v0.1.0 (/opt/rustwide/workdir/crate/task)
[INFO] [stdout] error: the `#[alloc_error_handler]` in this crate conflicts with allocation error handler in: std
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `memory` (lib test) due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr]    Migrating crate/serial/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating crate/coop/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed crate/coop/src/mouse.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:62:29
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  62 |             mouse_point.x = WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                             up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  63 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:69:29
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout]  69 |             mouse_point.y = WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                             up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  70 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:72:9
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  72 |         WRITER.get().unwrap().lock().write_pixel(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  77 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crate/coop/src/mouse.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 |         match STATE.fetch_add(1, Ordering::Relaxed) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout] 19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crate/coop/src/mouse.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |                     STATE.swap(0, Ordering::Relaxed);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout] 19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 STATE.swap(0, Ordering::Relaxed);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]  19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:194:14
[INFO] [stdout]     |
[INFO] [stdout] 194 |     unsafe { PORT_64.write(0xA8) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |     unsafe { PORT_64.write(0x20) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:198:35
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut status: u8 = unsafe { PORT_60.read() } as u8;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:201:14
[INFO] [stdout]     |
[INFO] [stdout] 201 |     unsafe { PORT_64.write(0x60) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 203 |     unsafe { PORT_60.write(status as u32) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:215:21
[INFO] [stdout]     |
[INFO] [stdout] 215 |         if unsafe { PORT_64.read() } & 0b10 == 0 {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:225:21
[INFO] [stdout]     |
[INFO] [stdout] 225 |         if unsafe { PORT_64.read() } & 0b1 == 0b1 {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:234:14
[INFO] [stdout]     |
[INFO] [stdout] 234 |     unsafe { PORT_64.write(0xD4) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:236:14
[INFO] [stdout]     |
[INFO] [stdout] 236 |     unsafe { PORT_60.write(value as u32) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:241:14
[INFO] [stdout]     |
[INFO] [stdout] 241 |     unsafe { PORT_60.read() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating crate/task/src/lib.rs from 2018 edition to 2021
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:62:29
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  62 |             mouse_point.x = WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                             up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  63 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:69:29
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout]  69 |             mouse_point.y = WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                             up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  70 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crate/coop/src/mouse.rs:72:9
[INFO] [stdout]     |
[INFO] [stdout]  61 |         if mouse_point.x > WRITER.get().unwrap().lock().info.horizontal_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  68 |         if mouse_point.y > WRITER.get().unwrap().lock().info.vertical_resolution as i16 - 1 {
[INFO] [stdout]     |                            ----------------------------
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  72 |         WRITER.get().unwrap().lock().write_pixel(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  77 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/spin-0.5.2/src/mutex.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crate/coop/src/mouse.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 |         match STATE.fetch_add(1, Ordering::Relaxed) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout] 19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crate/coop/src/mouse.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |                     STATE.swap(0, Ordering::Relaxed);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout] 19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 STATE.swap(0, Ordering::Relaxed);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - static mut STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]  19 + static STATE: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:194:14
[INFO] [stdout]     |
[INFO] [stdout] 194 |     unsafe { PORT_64.write(0xA8) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |     unsafe { PORT_64.write(0x20) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:198:35
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut status: u8 = unsafe { PORT_60.read() } as u8;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:201:14
[INFO] [stdout]     |
[INFO] [stdout] 201 |     unsafe { PORT_64.write(0x60) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 203 |     unsafe { PORT_60.write(status as u32) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:215:21
[INFO] [stdout]     |
[INFO] [stdout] 215 |         if unsafe { PORT_64.read() } & 0b10 == 0 {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:225:21
[INFO] [stdout]     |
[INFO] [stdout] 225 |         if unsafe { PORT_64.read() } & 0b1 == 0b1 {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:234:14
[INFO] [stdout]     |
[INFO] [stdout] 234 |     unsafe { PORT_64.write(0xD4) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:236:14
[INFO] [stdout]     |
[INFO] [stdout] 236 |     unsafe { PORT_60.write(value as u32) };
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> crate/coop/src/mouse.rs:241:14
[INFO] [stdout]     |
[INFO] [stdout] 241 |     unsafe { PORT_60.read() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]   --> crate/task/src/scheduler.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             asm!("
[INFO] [stdout]    |             ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use core::arch::asm;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]    --> crate/task/src/scheduler.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 asm!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]     |
[INFO] [stdout]   1 + use core::arch::asm;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]    --> crate/task/src/scheduler.rs:152:17
[INFO] [stdout]     |
[INFO] [stdout] 152 |                 asm!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]     |
[INFO] [stdout]   1 + use core::arch::asm;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: the `#[alloc_error_handler]` in memory conflicts with allocation error handler in: std
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `task` (lib test) due to 4 previous errors
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]   --> crate/task/src/scheduler.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             asm!("
[INFO] [stdout]    |             ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use core::arch::asm;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]    --> crate/task/src/scheduler.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 asm!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]     |
[INFO] [stdout]   1 + use core::arch::asm;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `asm` in this scope
[INFO] [stdout]    --> crate/task/src/scheduler.rs:152:17
[INFO] [stdout]     |
[INFO] [stdout] 152 |                 asm!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]     |
[INFO] [stdout]   1 + use core::arch::asm;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `task` (lib) due to 3 previous errors
[INFO] running `Command { std: "docker" "inspect" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212", kill_on_drop: false }`
[INFO] [stdout] a2ab7ffc0b60ddc4c10c32e7373b47ebe59f28bd0faabe1a0bf90012e9daa212
